#ifndef _TASK_H
#define _TASK_H
#include "stdint.h"
#include "string.h"
#include "stdbool.h"
#include "device.h"
#define TASK_NAME_MAXLEN 10
#define TASK_MAXNUM 10

typedef enum
{
	TASK_INVALID,
	TASK_READY,
	TASK_RUN,
	TASK_STOP,
} TASK_RUNSTATE;
typedef enum
{
	TASK_OPEN,
	TASK_CLOSE,
	TASK_INFO,
} TASK_CTRL;

typedef struct
{
	char name[TASK_NAME_MAXLEN];
	TASK_RUNSTATE Task_RunState; // 运行标志
	uint8_t Weight;				 // 权重	0-随时都能关设备休眠 1-需要等待忙标志清除
	uint32_t Task_StartTime;	 // 起始时间
	uint32_t Task_RunTime;		 // 运行时间
	void (*task_ctrl)(TASK_CTRL ctrl_type, void *param);
	void (*task_run)(void);
	list task_list;
} TASK_CB;

int task_create(TASK_CB *task, char *name, void (*task_ctrl)(TASK_CTRL ctrl_type, void *param), void (*task_run)(void));
TASK_CB *task_find(char *name);
void task_start(TASK_CB *task);
void task_stop(TASK_CB *task);
void task_delete(TASK_CB *task);
// 通知各自的设备控制函数，调整参数等操作
void task_ctrl(char *name, TASK_CTRL ctrl_type, void *param);
void Task_Run(void);
#endif
